#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, k;
vector<string> mat(2);
ll dist[2][100001];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
std::cin >> n >> k >> mat[0] >> mat[1];
memset(dist, 1, sizeof dist);
dist[0][0] = 0;
queue<pair<ll, ll>> q;
q.push({0, 0});
while(!q.empty()) {
ll w = q.front().first;
ll x = q.front().second;
q.pop();
if(dist[w][x] > x || mat[w][x] == 'X') {
continue;
}
if(x + k >= n) {
cout << "YES\n";
return 0;
}
for(int d = -1; d <= 1; d++) {
if(x + d >= 0 && 1 + dist[w][x] < dist[w][x+d]){ // subo ou desco
dist[w][x+d] = 1 + dist[w][x];
q.push({w, x+d});
}
}
if(dist[!w][x+k] > 1 + dist[w][x]){ // pulo (x^1 igual a passar de 0 para 1)
dist[!w][x+k] = 1 + dist[w][x];
q.push({!w, x+k});
}
}
cout << "NO\n";
}
852. Peak Index in a Mountain Array | 461. Hamming Distance |
1748. Sum of Unique Elements | 897. Increasing Order Search Tree |
905. Sort Array By Parity | 1351. Count Negative Numbers in a Sorted Matrix |
617. Merge Two Binary Trees | 1450. Number of Students Doing Homework at a Given Time |
700. Search in a Binary Search Tree | 590. N-ary Tree Postorder Traversal |
589. N-ary Tree Preorder Traversal | 1299. Replace Elements with Greatest Element on Right Side |
1768. Merge Strings Alternately | 561. Array Partition I |
1374. Generate a String With Characters That Have Odd Counts | 1822. Sign of the Product of an Array |
1464. Maximum Product of Two Elements in an Array | 1323. Maximum 69 Number |
832. Flipping an Image | 1295. Find Numbers with Even Number of Digits |
1704. Determine if String Halves Are Alike | 1732. Find the Highest Altitude |
709. To Lower Case | 1688. Count of Matches in Tournament |
1684. Count the Number of Consistent Strings | 1588. Sum of All Odd Length Subarrays |
1662. Check If Two String Arrays are Equivalent | 1832. Check if the Sentence Is Pangram |
1678. Goal Parser Interpretation | 1389. Create Target Array in the Given Order |